#include <cstdio>
#include <cstring>
#include <algorithm>
#include <set>

using namespace std;

struct Node
{
    int x, y;
    bool flag;
};

bool operator < ( const Node &a, const Node &b )
{
    if ( a.x != b.x ) return a.x < b.x;
    if ( a.y != b.y ) return a.y < b.y;
    return a.flag > b.flag;
}

Node a[ 200010 ];
int n;
multiset<int> s;

void init( )
{
    int i;
    scanf("%d", &n);
    for ( i = 0; i < n; i++ )
    {
        scanf("%d%d", &a[ i ].x, &a[ i ].y);
        a[ i ].flag = 0;
    }
    for ( i = 0; i < n; i++ )
    {
        scanf("%d%d", &a[ i + n ].x, &a[ i + n ].y);
        a[ i + n ].flag = 1;
    }
    sort( a, a + n * 2 );
    s.clear( );
}

void work( )
{
    int cnt = 0, i;
    multiset<int>::iterator ii;
    for ( i = 0; i < n * 2; i++ )
        if ( a[ i ].flag )
            s.insert( 1000000000 - a[ i ].y );
        else
        {
            ii = s.lower_bound( 1000000000 - a[ i ].y );
            if ( ii != s.end( ) )
            {
                cnt++;
                s.erase( ii );
            }
        }
    printf("%d\n", cnt);
}

int main( )
{
    int t;
    scanf("%d", &t);
    while ( t-- )
    {
        init( );
        work( );
    }
    return 0;
}
